/**
 * FigmaMCPWorkflow FieldNode配置模板
 * Phase 3使用的配置模板
 */

import { FieldNodeConfig } from '@/types';

/**
 * FieldNode配置模板
 * 注意规范：
 * 1. visible是唯一的boolean类型
 * 2. 其他布尔值使用'Y'/'N'字符串
 * 3. 颜色字段需要配对opacity
 * 4. 图片字段使用数组格式
 */
export const ${ComponentName}FieldTemplate: FieldNodeConfig = {
  // ========== 必需字段 ==========
  visible: true, // 唯一的boolean

  // ========== 基础信息 ==========
  title: '标题',
  subTitle: '副标题',
  description: '描述信息',

  // ========== 显示控制（Y/N） ==========
  showTitle: 'Y',
  showSubTitle: 'Y',
  showDescription: 'N',
  showLegend: 'Y',
  showTooltip: 'Y',
  showAxis: 'Y',
  showGrid: 'N',

  // ========== 颜色配置 ==========
  // 背景色
  backgroundColor: '#FFFFFF',
  backgroundColorOpacity: 1,

  // 标题颜色
  titleColor: '#333333',
  titleColorOpacity: 1,

  // 副标题颜色
  subTitleColor: '#666666',
  subTitleColorOpacity: 1,

  // 边框颜色
  borderColor: '#E8E8E8',
  borderColorOpacity: 1,

  // 主题色
  primaryColor: '#1890FF',
  primaryColorOpacity: 1,

  // ========== 尺寸和间距 ==========
  width: '100%',
  height: 'auto',
  minHeight: 200,
  maxHeight: 600,

  padding: '16px',
  margin: '0',

  // 边框
  borderWidth: 1,
  borderStyle: 'solid',
  borderRadius: 4,

  // 字体
  fontSize: 14,
  titleFontSize: 18,
  subTitleFontSize: 14,

  // ========== 数据配置 ==========
  data: [],
  dataSourceId: '',
  dataMapping: '',
  dataTransform: '',

  // 刷新配置
  refreshInterval: 0,
  autoRefresh: 'N',
  cacheEnabled: 'N',

  // ========== 图片资源 ==========
  backgroundImage: [],
  logo: [],
  icon: [],

  // ========== 交互配置 ==========
  clickable: 'Y',
  hoverable: 'Y',
  draggable: 'N',
  resizable: 'N',

  // ========== 高级配置 ==========
  // 主题
  theme: 'light',
  darkMode: 'N',

  // 布局
  layout: 'default',
  direction: 'horizontal',
  align: 'left',
  justify: 'start',

  // 动画
  animated: 'Y',
  animationDuration: 300,
  animationType: 'fade',

  // ========== 业务特定字段 ==========
  // 根据具体组件添加
  ${/*
    例如图表组件：
    chartType: 'line',
    xAxisField: '',
    yAxisField: '',
    seriesField: '',

    例如表格组件：
    columns: [],
    pageSize: 10,
    showPagination: 'Y',

    例如表单组件：
    formFields: [],
    submitUrl: '',
    validateOnChange: 'Y',
  */}
};

/**
 * 字段元数据配置
 * 用于生成配置面板
 */
export const ${ComponentName}FieldMetadata = {
  groups: [
    {
      name: 'basic',
      label: '基础信息',
      fields: ['title', 'subTitle', 'description']
    },
    {
      name: 'display',
      label: '显示控制',
      fields: ['showTitle', 'showSubTitle', 'showDescription']
    },
    {
      name: 'style',
      label: '样式配置',
      fields: [
        'backgroundColor',
        'backgroundColorOpacity',
        'titleColor',
        'titleColorOpacity',
        'borderColor',
        'borderColorOpacity'
      ]
    },
    {
      name: 'layout',
      label: '布局配置',
      fields: ['width', 'height', 'padding', 'margin']
    },
    {
      name: 'data',
      label: '数据配置',
      fields: ['dataSourceId', 'dataMapping', 'refreshInterval', 'autoRefresh']
    }
  ],

  fieldTypes: {
    // 文本输入
    text: ['title', 'subTitle', 'description', 'padding', 'margin'],

    // 数字输入
    number: [
      'width', 'height', 'minHeight', 'maxHeight',
      'borderWidth', 'borderRadius',
      'fontSize', 'titleFontSize', 'subTitleFontSize',
      'refreshInterval', 'animationDuration'
    ],

    // 开关
    switch: [
      'showTitle', 'showSubTitle', 'showDescription', 'showLegend',
      'autoRefresh', 'cacheEnabled', 'clickable', 'hoverable',
      'darkMode', 'animated'
    ],

    // 颜色选择
    color: [
      'backgroundColor', 'titleColor', 'subTitleColor',
      'borderColor', 'primaryColor'
    ],

    // 选择器
    select: {
      theme: ['light', 'dark', 'auto'],
      borderStyle: ['solid', 'dashed', 'dotted', 'none'],
      layout: ['default', 'grid', 'flex'],
      direction: ['horizontal', 'vertical'],
      align: ['left', 'center', 'right'],
      justify: ['start', 'center', 'end', 'between', 'around'],
      animationType: ['fade', 'slide', 'zoom', 'none']
    },

    // 图片上传
    upload: ['backgroundImage', 'logo', 'icon'],

    // 数据源选择
    dataSource: ['dataSourceId'],

    // 代码编辑器
    code: ['dataMapping', 'dataTransform']
  }
};

/**
 * 默认值生成函数
 * 根据组件类型生成合理的默认值
 */
export function generate${ComponentName}Defaults(componentType?: string) {
  const defaults = { ...${ComponentName}FieldTemplate };

  // 根据组件类型调整默认值
  switch (componentType) {
    case 'chart':
      defaults.height = 400;
      defaults.showLegend = 'Y';
      defaults.showTooltip = 'Y';
      defaults.animated = 'Y';
      break;

    case 'table':
      defaults.height = 'auto';
      defaults.showTitle = 'N';
      defaults.borderWidth = 1;
      break;

    case 'form':
      defaults.padding = '24px';
      defaults.borderRadius = 8;
      break;

    case 'dashboard':
      defaults.backgroundColor = '#F5F5F5';
      defaults.padding = '0';
      break;
  }

  return defaults;
}